package com.yjy.test5_filter;

import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

/**
 * 测试过滤消息
 * 大多数情况下，只限制一个消息只有一个标签，使用tag就可以获取您想要的消息了，如consumer.subscribe("topic", "tagA || tagB || tagC");
 * 复杂的应用场景，可以使用sql表达式筛选消息
 *
 * 发送消息时，你能通过putUserProperty来设置消息的属性
 * 消费消息时，使用MessageSelector.bySql来使用sql筛选消息
 */
public class FilterProducer {
    public static void main(String[] args) throws Exception {
        DefaultMQProducer producer = new DefaultMQProducer("producer5");
        producer.setNamesrvAddr("192.168.145.128:9876");
        producer.setVipChannelEnabled(false);
        producer.start();

        for (int i = 0; i < 10; i++) {
            Message message = new Message("TestTopic", ("Hello scheduled message " + i).getBytes());

            // 设置一些属性
            message.putUserProperty("index", String.valueOf(i));
            SendResult sendResult = producer.send(message);
            System.out.printf("发送消息：%s%n", sendResult);
        }

        producer.shutdown();
    }
}
